맨위로가기

원자성 (데이터베이스 시스템)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

원자성은 데이터베이스 시스템에서 트랜잭션의 ACID 특성 중 하나로, 트랜잭션 내의 모든 연산이 완전히 성공하거나(커밋) 완전히 실패(롤백)하여 데이터베이스의 일관성을 유지하는 것을 의미한다. 원자성은 격리성 및 일관성과 직교하며, 오류 감지 실패나 수동 롤백 실패는 격리성과 일관성 실패를 야기할 수 있다. 일반적으로 트랜잭션 시작과 종료를 알리는 메커니즘, 변경 전후 데이터 복사본 보존, 커밋-롤백 메커니즘, 로깅/저널링을 통해 구현된다. 운영체제는 시스템 자원 제어를 통해 애플리케이션 수준의 원자성 구현을 지원하며, 하드웨어는 테스트 앤 세트(TAS)와 같은 원자적 연산을 제공한다.

더 읽어볼만한 페이지

  • 트랜잭션 처리 - 2단계 커밋 프로토콜
    2단계 커밋 프로토콜은 분산 컴퓨팅 환경에서 트랜잭션의 원자성을 보장하는 분산 알고리즘으로, 조정자와 참가자로 구성되어 모든 참가자가 트랜잭션을 완료하거나 아무도 완료하지 못하도록 하며, 커밋 요청 및 커밋 단계를 거쳐 모든 참가자의 동의를 얻어야 커밋된다.
  • 트랜잭션 처리 - 온라인 트랜잭션 처리
    온라인 트랜잭션 처리(OLTP)는 실시간 데이터베이스 트랜잭션 처리 방식으로, 가용성, 속도, 동시성, 내구성을 목표로 은행, 항공사, 전자 상거래 등에서 활용된다.
  • 데이터 관리 - 데이터 센터
    데이터센터는 컴퓨터 시스템 및 관련 장비와 지원 인프라를 수용하는 시설로, 기술 발전에 따라 규모와 중요성이 확대되었으며, 에너지 효율과 보안을 고려하여 설계 및 운영되고, TIA-942 표준에 따른 티어 분류와 친환경 기술 도입이 이루어지고 있다.
  • 데이터 관리 - 정보 아키텍처
    정보 아키텍처는 정보 시스템 및 정보 기술 분야에서 공유 정보 환경의 구조적 설계를 의미하며, 웹사이트, 소프트웨어 등의 구성과 레이블링을 포함하여 검색 용이성과 사용성을 지원하고, 도서관정보학에 기원을 두고 있다.
원자성 (데이터베이스 시스템)
데이터베이스 시스템의 속성
내용트랜잭션은 모든 작업이 완료되거나 전혀 완료되지 않도록 보장
관련성ACID 속성
세부 사항
설명데이터베이스 시스템에서 원자적 연산의 속성
작업 그룹을 단일 작업 단위로 만듦
중요성데이터베이스 무결성 및 신뢰성 보장
목적트랜잭션의 부분적인 완료 방지
시스템 오류 발생 시 데이터 손상 방지
구현
방법로깅
섀도 페이징
예시
은행 계좌 이체계좌 A에서 인출
계좌 B에 입금
두 작업 모두 성공하거나 모두 실패해야 함
중요성한 계좌에서 돈이 빠져나갔지만 다른 계좌에 입금되지 않는 상황 방지
추가 정보
용어 유래그리스어 "ἄτομος (아토모스)", 즉 "나눌 수 없는"
참고일관성
격리성
지속성
관련 주제트랜잭션 처리
분산 트랜잭션

2. 직교성

원자성은 트랜잭션의 다른 ACID 속성과 완전히 직교성을 나타내지 않는다. 예를 들어, 격리성은 교착 상태와 같은 격리 위반 상황에서 트랜잭션을 롤백하기 위해 원자성에 의존한다. 또한 일관성은 잘못된 트랜잭션으로 인해 일관성이 깨졌을 때 이를 되돌리기 위해 원자성에 의존한다. 마지막으로, 트랜잭션이 외부 요인으로 인한 실패 상황에서도 원자성을 보장하기 위해서는 지속성에 의존한다.

결과적으로, 이러한 위반 상황을 감지하지 못하거나 트랜잭션을 롤백하지 못하면 격리성 또는 일관성 실패로 이어질 수 있다.

3. 구현

원자성은 일반적으로 트랜잭션의 시작과 완료를 표시하는 메커니즘을 제공하거나, 변경 전 데이터의 복사본을 유지하는 방식(읽기-복사-갱신)으로 구현된다. 많은 파일 시스템은 데이터의 여러 복사본을 유지할 필요성을 줄이기 위해 저널링 기법을 사용한다.

데이터베이스 시스템에서는 변경 사항을 추적하기 위해 로깅 또는 저널링 방식을 주로 사용하며, 원자적 실행을 보장하기 위해 커밋-롤백 메커니즘을 지원하는 경우가 많다. 시스템은 변경 사항이 성공적으로 디스크에 기록된 후 관련 로그(메타데이터 포함)를 동기화한다. 만약 시스템 충돌이 발생하면, 복구 과정에서 완료되지 않은 트랜잭션의 변경 사항은 로그를 기반으로 무시되거나 롤백되어 데이터 일관성을 유지한다.

이러한 구현 방식은 병행 제어 문제와 같은 다양한 요인에 따라 달라질 수 있지만, '완전한 성공 또는 완전한 실패'라는 원자성의 기본 원칙은 동일하게 유지된다. 궁극적으로 애플리케이션 수준에서의 원자성 구현은 운영 체제 및 하드웨어 수준의 지원 기능에 의존한다.

3. 1. 운영체제 및 하드웨어 지원

궁극적으로 애플리케이션 수준에서 원자성을 구현하려면 운영 체제의 기능에 의존하게 된다. 운영 체제는 시스템 자원을 선점하려는 다른 소프트웨어나 예기치 않은 자원 부족 상황(예: 전원 차단)에 대비하기 위해 전문화된 하드웨어를 활용한다.

예를 들어, 파일 시스템 수준에서 POSIX 호환 시스템은 애플리케이션이 파일을 원자적으로, 즉 다른 프로세스의 방해 없이 배타적으로 사용하거나 특정 연산을 완전하게 수행할 수 있도록 다양한 시스템 호출을 제공한다. 대표적인 시스템 호출로는 파일을 열 때 사용되는 open(2), 디렉토리를 생성하는 mkdir(2), 파일 잠금을 위한 flock(2)와 fcntl(2), NetBSD의 재시작 가능한 시퀀스를 위한 rasctl(2), 세마포어 연산을 위한 semop(2), sem_wait(2), sem_post(2), 파일 데이터 동기화를 위한 fdatasync(2)와 fsync(2), 파일 이름 변경을 위한 rename(2) 등이 있다. 프로세스 수준에서는 POSIX 스레드가 적절한 동기화 기본 요소를 제공하여 원자성을 지원한다.

하드웨어 수준에서는 원자적 연산메모리 배리어가 필요하다. 원자적 연산의 예로는 테스트 앤 세트(TAS), 가져오기-더하기, 비교-앤-스왑, 또는 로드-링크/저장-조건부 등이 있으며, 원자적인 증가/감소 기능도 요구된다. 과거에는 이러한 하드웨어 기능이 부족할 경우, 모든 하드웨어나 소프트웨어 인터럽트를 비활성화하기 위해 인터럽트 레벨을 높이는 방식으로 원자적 동기화를 구현하기도 했다. 이러한 저수준 작업은 때때로 기계어어셈블리어를 통해 직접 수행되었다. 그러나 현대의 휴대용 운영 체제는 동기화를 위해 인터럽트를 차단하는 방식을 사용하기 어렵다. 이는 하이퍼 스레딩이나 다중 처리와 같은 동시 실행 기능이 없는 하드웨어가 이제는 매우 드물기 때문이다.

참조

[1] 웹사이트 atomic operation http://www.webopedia[...] Webopedia 2011-03-23
[2] 웹사이트 Atomic File Transactions, Part 1 http://archive.oreil[...] 2016-02-28



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com